package juego.Encontrable;

import juego.Jugador;


public abstract class Encontrable {
	
	protected int vecesAtravesable;
	// veces que se puede atravesar el Encontrable
	// si esta en 0 el Econtrable "desaparece" (ya no se puede atravesar mas)
	// si es -1, siempre se puede atravesar, nunca "desaparece"
	// SE RESULEVE SOLO SI SE PUEDE ATRAVESAR O NO, SOLO LLAMAR ATRAVESAR()
	
	public final boolean atravesar(Jugador jugador) {
		boolean resultado = true;
		if ( vecesAtravesable != 0 ) // no realiza ninguna accion si no debe
			resultado = encontro(jugador);
		if (vecesAtravesable > 0) // actualiza el atributo si necesario
			vecesAtravesable = vecesAtravesable - 1;
		return resultado;
	}
	// actualiza automaticamente el atributo vecesAtravesable
	
	abstract protected boolean encontro( Jugador jugador ) ;
	// true si se pudo atravesar (y no tienen que dar la vuelta)
	// false si no lo puede atravesar y tienen que dar la vuelta
	// al atravesarlo, se actualizan los movimientos del Jugador
	
	public final boolean estaActivo() {
		if (vecesAtravesable == 0)
			return false;
		return true;
	}
	
	public final void desactivar(){
		vecesAtravesable = 0;
	}
	
	public abstract String darSuNombre();
	
}
